home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok80.lha / CheckCaps / DeviceSupport.mod < prev    next >
Text File  |  1993-08-15  |  2KB  |  68 lines

  1. (*---------------------------------------------------------------------------
  2.  :Program.     DeviceSupport.mod
  3.  :Contents.    Easy Device access
  4.  :Author.      Christian Stiens
  5.  :Address.     Snail-Mail:           E-Mail:
  6.  :Address.     Heustiege 2           UUCP: Christian_Stiens@ouzonix.bo.open.de
  7.  :Address.     W-4710 Lüdinghausen   FIDO: 2:241/5807
  8.  :Copyright.   public domain
  9.  :Language.    Oberon
  10.  :Translator.  Amiga Oberon v2.42d (inofficial beta version)
  11.  :History.     V1.0, 10-May-92
  12. ---------------------------------------------------------------------------*)
  13.  
  14.  
  15. MODULE DeviceSupport;
  16.  
  17.   IMPORT
  18.     e: Exec, es: ExecSupport;
  19.  
  20.   TYPE
  21.     InitProc* = PROCEDURE(ioReq: e.MessagePtr);
  22.  
  23.  
  24.   PROCEDURE OpenDev* (name   : ARRAY OF CHAR;
  25.                       unit   : LONGINT;
  26.                       flags  : LONGSET;
  27.                       ioSize : INTEGER;
  28.                       ioInit : InitProc): e.MessagePtr; (* $CopyArrays- *)
  29.     VAR
  30.       port: e.MsgPortPtr;
  31.       ioReq: e.IORequestPtr;
  32.  
  33.   BEGIN
  34.     port := es.CreatePort("",0);
  35.     IF port = NIL THEN RETURN NIL END;
  36.     IF ioSize = 0 THEN ioSize := SIZE(e.IOStdReq) END;
  37.     ioReq := es.CreateExtIO(port,ioSize);
  38.     IF ioReq = NIL THEN es.DeletePort(port); RETURN NIL END;
  39.     IF ioInit # NIL THEN ioInit(ioReq) END;
  40.     IF e.OpenDevice(name,unit,ioReq,flags) # 0 THEN
  41.       es.DeleteExtIO(ioReq);
  42.       es.DeletePort(port);
  43.       RETURN NIL
  44.     END;
  45.     RETURN ioReq;
  46.   END OpenDev;
  47.  
  48.  
  49.   PROCEDURE CloseDev* (ioReq: e.MessagePtr);
  50.     VAR port: e.MsgPortPtr;
  51.   BEGIN
  52.     port := ioReq.replyPort;
  53.     e.CloseDevice(ioReq);
  54.     es.DeleteExtIO(ioReq);
  55.     es.DeletePort(port);
  56.   END CloseDev;
  57.  
  58.  
  59.   PROCEDURE DoCommand* (ioReq: e.MessagePtr; cmd: INTEGER);
  60.   BEGIN
  61.     ioReq(e.IORequest).command := cmd;
  62.     e.OldDoIO(ioReq);
  63.   END DoCommand;
  64.  
  65.  
  66. END DeviceSupport.
  67.  
  68.